///////////////////////////////////////////////
// Procedural Buildings Base Rule Module Generation Class
#ifndef __proceduralproductionrulebase_h__
#define __proceduralproductionrulebase_h__
#pragma once

#include "ProceduralSystem/ProceduralGeneration.h"

//////////////////////////////////////////////////////////////////////////
class CProceduralProductionRuleBase
{
public:

	virtual void GenerateFloor(TModulesList &modulesList);	
	bool IsModuleInModulesList(TModulesList &searchList, CProceduralModule &module);
	CProceduralModule& SpawnModule(CProceduralModule &sourceModule, CProceduralModule &newModule, const Vec3 &newModulePosition);

protected:
	virtual void CalcSize();
	virtual CProceduralModule *GenerateModule(int nX,int nY);
	virtual void AddModuleLinks(TModulesList &modulesList){};
	TModulesList modules;
	int nSizeX,nSizeY;
};
//////////////////////////////////////////////////////////////////////////
#endif